<%
Class cls_ImgInfo 
    dim aso , fso1, f1, ext, bFlag, i, p1, arr
    Private Sub Class_Initialize 
    set aso=CreateObject( "Adodb.Stream") 
    aso.Mode=3 
    aso.Type=1 
    aso.Open 
    End Sub 
    Private Sub Class_Terminate
    err.clear 
    set aso=nothing 
    End Sub 
    
    Private Function Bin2Str(Bin) 
    Dim I, Str 
    For I=1 to LenB(Bin) 
    clow=MidB(Bin,I,1) 
    if ASCB(clow) <128 then 
    Str = Str & Chr(ASCB(clow)) 
    else 
    I=I+1 
    if I <= LenB(Bin) then Str = Str & Chr(ASCW(MidB(Bin,I,1)&clow)) 
    end if 
    Next 
    Bin2Str = Str 
    End Function 
    
    Private Function Num2Str(num,base,lens) 
    dim ret 
    ret = "" 
    while(num >=base) 
    ret = (num mod base) & ret 
    num = (num - num mod base)/base 
    wend 
    Num2Str = right(string(lens, "0") & num & ret,lens) 
    End Function 
    
    Private Function Str2Num(str,base) 
    dim ret 
    ret = 0 
    for i=1 to len(str) 
    ret = ret *base + cint(mid(str,i,1)) 
    next 
    Str2Num=ret 
    End Function 
    
    Private Function BinVal(bin) 
    dim ret 
    ret = 0 
    for i = lenb(bin) to 1 step -1 
    ret = ret *256 + ascb(midb(bin,i,1)) 
    next 
    BinVal=ret 
    End Function 
    
    Private Function BinVal2(bin) 
    dim ret 
    ret = 0 
    for i = 1 to lenb(bin) 
    ret = ret *256 + ascb(midb(bin,i,1)) 
    next 
    BinVal2=ret 
    End Function 
    
    Private Function getImageSize(filespec) 
    dim ret(3) 
    aso.LoadFromFile(filespec) 
    bFlag=aso.read(3) 
    select case hex(binVal(bFlag)) 
    case "4E5089": 
        aso.read(15) 
        ret(0)= "PNG" 
        ret(1)=BinVal2(aso.read(2)) 
        aso.read(2) 
        ret(2)=BinVal2(aso.read(2)) 
    case "464947": 
        aso.read(3) 
        ret(0)= "GIF" 
        ret(1)=BinVal(aso.read(2)) 
        ret(2)=BinVal(aso.read(2)) 
    case "535746": 
        aso.read(5) 
        binData=aso.Read(1) 
        sConv=Num2Str(ascb(binData),2 ,8) 
        nBits=Str2Num(left(sConv,5),2) 
        sConv=mid(sConv,6) 
        while(len(sConv) <nBits*4) 
        binData=aso.Read(1) 
        sConv=sConv &Num2Str(ascb(binData),2 ,8) 
        wend 
        ret(0)= "SWF" 
        ret(1)=int(abs(Str2Num(mid(sConv,1*nBits+1,nBits),2)-Str2Num(mid(sConv,0*nBits+1,nBits),2))/20) 
        ret(2)=int(abs(Str2Num(mid(sConv,3*nBits+1,nBits),2)-Str2Num(mid(sConv,2*nBits+1,nBits),2))/20) 
    case "FFD8FF": 
        do 
        do: p1=binVal(aso.Read(1)): loop while p1=255 and not aso.EOS 
        if p1 >191 and p1<196 then exit do else aso.read(binval2(aso.Read(2))-2) 
        do:p1=binVal(aso.Read(1)):loop while p1 <255 and not aso.EOS 
        loop while true 
        aso.Read(3) 
        ret(0)= "JPG" 
        ret(2)=binval2(aso.Read(2)) 
        ret(1)=binval2(aso.Read(2)) 
    case else: 
        if left(Bin2Str(bFlag),2)= "BM" then 
        aso.Read(15) 
        ret(0)= "BMP" 
        ret(1)=binval(aso.Read(4)) 
        ret(2)=binval(aso.Read(4)) 
        else 
        ret(0)= "" 
        end if 
    end select 
    ret(3)= "width=""" & ret(1) &""" height=""" & ret(2) &"""" 
    getimagesize=ret 
    End Function 
    
    Public Function imgW(pic_path) 
    Set fso1 = server.CreateObject( "Scripting.FileSystemObject") 
    If (fso1.FileExists(pic_path)) Then 
    Set f1 = fso1.GetFile(pic_path) 
    ext=fso1.GetExtensionName(pic_path) 
    select case ext 
    case "gif","bmp","jpg","png": 
    arr=getImageSize(f1.path) 
    imgW = arr(1) 
    end select 
    Set f1=nothing 
    else 
    imgW = 0 
    End if 
    Set fso1=nothing 
    End Function 
    
    Public Function imgH(pic_path) 
    Set fso1 = server.CreateObject( "Scripting.FileSystemObject") 
    If (fso1.FileExists(pic_path)) Then 
    Set f1 = fso1.GetFile(pic_path) 
    ext=fso1.GetExtensionName(pic_path) 
    select case ext 
    case "gif","bmp","jpg","png": 
    arr=getImageSize(f1.path) 
    imgH = arr(2) 
    end select 
    Set f1=nothing 
    else 
    imgH = 0 
    End if 
    Set fso1=nothing 
    End Function 

    Function GetAutoImg(fitWidth,fitHeight,pic_path)
        Dim hhRtn, wwRtn, ww, hh
        hhRtn=0
        wwRtn=0
        ww = imgW(pic_path)
        hh = imgH(pic_path)

        if ww>0 and hh>0 then
            if ww/hh>=FitWidth/FitHeight then
                wwRtn=fitWidth
                hhRtn=CInt((hh*FitWidth)/ww)
            else
                hhRtn=fitHeight
                wwRtn=CInt((ww*FitHeight)/hh)
            end if
        end if
        GetAutoImg=" height='"&hhRtn&"'"&" width='"&wwRtn&"' "
    End Function
End Class
%>